1. Field of the Invention
The present invention relates to a storage system which can optimize performance tuning of a cache memory for each of a plurality of application programs.
2. Description of the Related Art
Recently, storage consolidation where storage devices dispersed in each server are consolidated in a single place and connected to servers via a storage-dedicated network such as a SAN (Storage Area Network) has been widely used. As an operation pattern of the storage consolidation, common use of a storage system by a plurality of application programs or contents has been increasing. The storage system is configured with, for example, a disk array device and the like. A disk array device is configured by disposing numbers of disk drives in an array, and is constructed on the basis of, for example, RAID (Redundant Array of Independent Inexpensive Disks). On a physical storage region provided by the group of disk drives, at least one or more logical volumes are formed that are provided to a host device. The host device can read and write data for the logical volumes by issuing a write command or read command to the storage system.
In this type of storage system, a cache memory for temporarily storing write data for writing data into a disk drive or read data for reading data from the disk drive is mounted, to realize high speed I/O processing for the host device (For example, Japanese Patent Application Publication No. 2001-166993). For example, regarding a write access to the disk drive from the host device, completion of write processing is notified to the host device in response to writing of the write data into the cache memory, and destage is performed after a certain amount of cache data is accumulated. Regarding a read access to the disk drive from the host device, when the read data hits the cache memory, a high-speed access is realized by reading the read data from the cache memory.
However, since the I/O characteristics of each application program differ, it is necessary to optimize performance tuning of the cache memory (for example, setting of segment size, necessity of dual writing (mirror writing) between controllers, etc.) in accordance with the I/O characteristics.
For example, as with an application program which performs streaming delivery of the contents of a moving image, a still image or the like, for such application program for consecutively processing large quantities of data, it is preferred that the segment size of the cache memory be set to be large and that the overhead be reduced. On the other hand, for an application program in which a fine access such as a database is issued randomly, it is preferred that the segment size be set to be small and the overhead reduced.
Further, for example, as in an online service in a bank, for an application program in which high reliability is required, it is necessary to duplicate the cache data to securely save the data in case of trouble. On the other hand, as in a temporary simulation such as weather prediction etc., or scientific and engineering calculations, when performing calculation on the basis of source data which is saved, using another method, securing the performance of the calculation is often a center of focus rather than securing high reliability by dual writing the data to the cache memory, for saving a half-way calculation result (temporary data or the like).
In a conventional storage system, performance tuning for judging necessity of segment size settings or of dual writing in accordance with the I/O characteristics for each application program could not be performed, thus in a storage system which is shared by a plurality of application programs, when performing tuning for a cache memory which is optimum to a certain application program, there occurs a problem that the performances of other application programs decrease. For example, when setting the segment size large for an application program which provides a streaming service, the application program such as a database is lowered in the percent of hit rate of the cache memory.
Moreover, in the storage system which is shared by a plurality of application programs, a resource conflict between the application programs could be generated, thus it is necessary to inhibit the resource conflict to appropriately bring the performance of each application program into action. For example, in the storage system which is shared by a plurality of application programs having different loads, more writing is performed from an application program having a high load, thus the cache memory is filled with the data of the high load application program, and a resource conflict with other application programs may be generated.
Such a resource conflict could be generated not only between a plurality of application programs having different I/O characteristics but also between a plurality of disk drives having different performance characteristics. For example, in a storage system which has mixed loads of a fiber channel disk drive and ATA (Advanced Technology Attachment) disk drive, it takes longer time for access in the ATA disk drive than the fiber channel disk drive, thus the time required in destaging from the cache memory to the ATA disk drive is longer than the time required in destaging from the cache memory to the fiber channel disk drive. Consequently, the time taken for the data of the application program that uses the ATA disk drive to accumulate in the cache memory becomes long by that much, thus the data of the ATA disk drive is accumulated in the cache memory, thereby generating a resource conflict.